package com.zhizhi.common.base;


import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.zhizhi.common.constant.BaseEntityFieldConstant;
import lombok.Data;

import java.io.Serializable;

@Data
public abstract class BaseEntity<T extends Model> extends Model implements Serializable {

    private static final long serialVersionUID = 1L;
    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    public Integer id;
    /**
     * 是否删除  0 不删除  1逻辑删除
     */
    @TableLogic
    public Integer del;
    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    public String createTime;
    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    public String updateTime;
    /**
     * 创建人
     */
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    public Integer createUser;
    /**
     * 更新人
     */
    @TableField(value = "update_user", fill = FieldFill.INSERT_UPDATE)
    public Integer updateUser;
    /**
     * 每页多少条
     */
    @TableField(exist = false)
    @JsonIgnore
    public String pageSize;
    /**
     * 页码
     */
    @TableField(exist = false)
    @JsonIgnore
    public String pageNum;

    /**
     * 排序列
     */
    @TableField(exist = false)
    @JsonIgnore
    public String sortColumn = BaseEntityFieldConstant.CREATE_TIME;
    /**
     * 排序规则 asc 和desc
     */
    @TableField(exist = false)
    @JsonIgnore
    public String sortRule = BaseEntityFieldConstant.SORT_DESC;
    /**
     * 开始时间
     */
    @TableField(exist = false)
    @JsonIgnore
    @JsonProperty
    public String startTime;
    /**
     * 结束时间
     */
    @TableField(exist = false)
    @JsonIgnore
    @JsonProperty
    public String endTime;

    /**
     * 创建人姓名
     */
    @TableField(exist = false)
    public String createUserName;


    /**
     * 修改人姓名
     */
    @TableField(exist = false)
    public String updateUserName;


    @Override
    public Serializable pkVal() {
        return this.id;
    }

}
